SQL Working With Dates

SQL में दिनांकों के साथ काम करने के बारे में जानें और दिनांक फ़ंक्शंस का उपयोग करना सीखें

एसक्यूएल तिथियाँ

तारीखों के साथ काम करते समय सबसे कठिन हिस्सा यह सुनिश्चित करना है कि जिस तारीख को आप डालने का प्रयास कर रहे हैं उसका प्रारूप डेटाबेस में दिनांक कॉलम के प्रारूप से मेल खाता है।

जब तक आपके डेटा में केवल दिनांक भाग शामिल है, आपकी क्वेरीज़ अपेक्षा के अनुरूप काम करेंगी। हालाँकि, जब कोई समय घटक शामिल होता है, तो यह अधिक जटिल हो जाता है।

💡महत्वपूर्ण नोट:

डेटाबेस सिस्टम और क्षेत्रीय सिस्टम के बीच दिनांक प्रारूप भिन्न-भिन्न होते हैं। हमेशा अपने विशिष्ट डेटाबेस के लिए दस्तावेज़ की जाँच करें।

SQL दिनांक डेटा प्रकार

MySQL दिनांक प्रकार

  • DATE- प्रारूप YYYY-MM-DD
  • DATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP- प्रारूप: YYYY-MM-DD HH:MI:SS
  • YEAR- प्रारूप YYYY या YY

SQL सर्वर दिनांक प्रकार

  • DATE- प्रारूप YYYY-MM-DD
  • DATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP- प्रारूप: एक अद्वितीय संख्या

⚠️नोट:

आपके डेटाबेस में एक नई तालिका बनाते समय एक कॉलम के लिए दिनांक प्रकार का चयन किया जाता है!

SQL दिनांकों के साथ कार्य कर रहा है

नीचे दी गई तालिका जांचें:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

अब हम उपरोक्त तालिका से ऑर्डरडेट "2008-11-11" वाले रिकॉर्ड का चयन करना चाहते हैं।

हम निम्नलिखित चयन कथन का उपयोग करते हैं:

तिथि के अनुसार चयन:

SELECT * FROM Orders 
WHERE OrderDate='2008-11-11'

परिणाम-पैकेज इस तरह दिखेगा:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

💡नोट:

यदि कोई समय घटक शामिल नहीं है तो दो तिथियों की तुलना आसानी से की जा सकती है!

समय घटक का उदाहरण

अब, मान लीजिए कि "ऑर्डर" तालिका इस तरह दिखती है ("ऑर्डरडेट" कॉलम में जोड़े गए समय तत्व पर ध्यान दें):

OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 Camembert Pierrot 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59

यदि हम ऊपर बताए गए समान SELECT कथन का उपयोग करते हैं:

समय घटक के साथ खोजें:

SELECT * FROM Orders 
WHERE OrderDate='2008-11-11'

हमें कोई परिणाम नहीं मिला! ऐसा इसलिए है क्योंकि क्वेरी केवल समय घटक के बिना दिनांकों की खोज करती है।

💡सहायता नोट:

अपने प्रश्नों को सरल और बनाए रखने में आसान रखने के लिए, अपनी तिथियों में समय तत्वों का उपयोग न करें जब तक कि आपको आवश्यकता न हो!

सामान्य दिनांक संचालन

वर्तमान तिथि

वर्तमान तिथि प्राप्त करें

-- MySQL
SELECT CURDATE();

-- SQL Server
SELECT GETDATE();

-- Oracle
SELECT SYSDATE FROM DUAL;

दिनांक जोड़ें

तारीखों में दिन जोड़ना

-- MySQL
SELECT DATE_ADD(OrderDate, INTERVAL 7 DAY)
FROM Orders;

-- SQL Server
SELECT DATEADD(day, 7, OrderDate)
FROM Orders;

तिथि अंतर

दो तिथियों के बीच का अंतर

-- MySQL
SELECT DATEDIFF('2023-12-31', '2023-01-01');

-- SQL Server
SELECT DATEDIFF(day, '2023-01-01', '2023-12-31');

तारिख का प्रारूप

MySQL दिनांक प्रारूप

-- विभिन्न आकार DATE_FORMAT(ऑर्डर दिनांक, '%Y-%m-%d') को स्वरूपित दिनांक के रूप में चुनें, DATE_FORMAT(आदेश दिनांक, '%d/%m/%Y') यूरोपीय दिनांक के रूप में, DATE_FORMAT(ऑर्डर दिनांक, '%M %d, %Y') लंबी तिथि के रूप में ऑर्डर से;

SQL सर्वर दिनांक स्वरूप

-- विभिन्न आकार ISOFormat के रूप में कन्वर्ट (VARCHAR, ऑर्डर दिनांक, 23) का चयन करें, कनवर्ट करें (वर्कर, ऑर्डर दिनांक, 103) ब्रिटिश प्रारूप के रूप में, प्रारूप (आदेश दिनांक, 'dddd, MMMM dd, yyyy') AS LongDate ऑर्डर से;

प्रक्रिया दिनांक संबंधी प्रश्न

दिनांक सीमा संबंधी प्रश्न

- पिछले 30 दिनों से ऑर्डर ऑर्डर में से * चुनें जहां ऑर्डर दिनांक >= DATE_SUB(CURDATE(), अंतराल 30 दिन); --निर्दिष्ट माह के आदेश ऑर्डर में से * चुनें जहां वर्ष (ऑर्डर दिनांक) = 2023 और महीना(ऑर्डर दिनांक) = 12;

दिनांक एकीकरण

- महीने के हिसाब से ऑर्डर वर्ष के रूप में वर्ष (ऑर्डर दिनांक) चुनें, माह(आदेश दिनांक) माह के रूप में, गिनती(*) आदेश गणना के रूप में आदेश से वर्ष के अनुसार समूह (ऑर्डर दिनांक), माह (ऑर्डर दिनांक) वर्ष, माह के अनुसार ऑर्डर करें;

दिनांक छँटाई

- सबसे पहले नवीनतम ऑर्डर ऑर्डर में से * चुनें ऑर्डर दिनांक DESC द्वारा ऑर्डर करें; -- सबसे पुराने ऑर्डर पहले ऑर्डर में से * चुनें ऑर्डरडेट एएससी द्वारा ऑर्डर;

अभ्यास

DATE डेटा प्रकार के लिए निम्नलिखित में से कौन सा प्रारूप सही है?

YYYY/MM/DD
✗ ग़लत! इसका उपयोग कुछ सेटिंग्स में किया जा सकता है, लेकिन यह SQL में मानक DATE प्रारूप नहीं है
MM-DD-YYYY
✗ ग़लत! यह यूएस प्रारूप है, लेकिन SQL में मानक DATE प्रारूप नहीं है
YYYY-MM-DD
✓ ठीक है! YYYY-MM-DD SQL में DATE डेटा प्रकार के लिए मानक ISO प्रारूप है। यह अंतर्राष्ट्रीय दिनांक प्रारूप है और अधिकांश डेटाबेस सिस्टम के साथ काम करता है
DD-MM-YYYY
✗ ग़लत! यह यूरोपीय प्रारूप है, लेकिन SQL में मानक DATE प्रारूप नहीं है